const arr=[1,[2,3,[4,5]]]

//1. 使用 flat(depth),depth是可选参数，表示扁平化的深度
let arr1=arr.flat(Infinity)
console.log(arr1)

//2.使用cancat
function fn2(arr){
  let arr2=[]
  for(let i=0;i<arr.length;i++){
    if(Array.isArray(arr[i])){
      arr2=arr2.concat(fn2(arr[i]))
    }else{
      arr2.push(arr[i])
    }
  }
  return arr2
}
console.log(fn2(arr))

//3.使用reduce
function fn3(arr){
  return arr.reduce((result,item)=>{
    return result.concat(Array.isArray(item)?fn3(item):item)
  },[])
}
console.log(fn3(arr))

//4.函数递归
const arr4=[]
function fn4(arr){
  for(let i=0;i<arr.length;i++){
    if(Array.isArray(arr[i])){
      fn4(arr[i])
    }else{
      arr4.push(arr[i])
    }
  }
  return arr4
}
console.log(fn4(arr))

//5.正则
const arr5 = JSON.parse('[' + JSON.stringify(arr).replace(/\[|\]/g, '') + ']')
console.log(arr5)
